package com.example.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.example.model.SimpleCounter;

@Controller
public class BaseController {
	// 静态计数器实例（保证线程安全）
	private static SimpleCounter sc = new SimpleCounter();
	// 日志记录器
	private static final Logger logger = LoggerFactory.getLogger(BaseController.class);
	// 视图名称常量
	private static final String VIEW_INDEX = "index"; // 指向 index.jsp
	private static final String VIEW_LOGIN = "login";   // 指向 login.jsp

	// 获取下一个计数器值（同步方法）
	private static synchronized long getNextCounterValue() {
		sc.increase(); // 假设 SimpleCounter 有 increase() 方法
		return sc.getValue(); // 假设 SimpleCounter 有 getValue() 方法
	}

	// ------------------------- 首页：处理 /index 路径 -------------------------
	@GetMapping("/index") // 处理 GET 请求到 /index
	public String index(ModelMap model) {
		// 设置欢迎消息
		model.addAttribute("message", "welcome");
		// 记录页面刷新次数
		long counterValue = getNextCounterValue();
		model.addAttribute("counter", counterValue);
		logger.debug("[index] 页面刷新次数: {}", counterValue);
		// 返回 index.jsp 视图（视图解析器会自动拼接路径）
		return VIEW_INDEX;
	}

	// ------------------------- 根路径重定向到首页 -------------------------
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String redirectToIndex() {
		// 将根路径 / 重定向到 /index，避免路径冲突
		return "redirect:/index";
	}

	// ------------------------- 登录功能 -------------------------
	@RequestMapping("/login1")
	public String login1(String username, String password, ModelMap model) {
		if (username.equals("kyo") && password.equals("123")) {
			return "main"; // 登录成功跳转主页面
		} else {
			model.addAttribute("error", "用户名或密码错误！"); // 传递错误信息
			return VIEW_LOGIN; // 登录失败返回登录页
		}
	}

	// ------------------------- 动态路径欢迎页（可选）------------------------
	@RequestMapping(value = "/{name}", method = RequestMethod.GET)
	public String welcomeName(@PathVariable String name, ModelMap model) {
		// 动态消息示例：Welcome {name}
		model.addAttribute("message", "Welcome " + name);
		long counterValue = getNextCounterValue();
		model.addAttribute("counter", counterValue);
		logger.debug("[welcomeName] 访问用户: {}, 刷新次数: {}", name, counterValue);
		return VIEW_INDEX; // 复用 index.jsp 视图
	}
}